package Hot100.leetcode.editor.cn.code.矩阵;
//Java：旋转图像
public class RotateImage{
    public static void main(String[] args) {
        Solution solution = new RotateImage().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
//位于 i 行 j 列的元素，去到 j 行 n−1−i 列，即 (i,j)→(j,n−1−i)。
//转置：把矩阵按照主对角线翻转，位于 (i,j) 的元素去到 (j,i)。按照主对角线对称
//行翻转：把每一行翻转，位于 (j,i) 的元素去到 (j,n−1−i)。
    public void rotate(int[][] matrix) {
        int n = matrix.length;
        //1.根据对角线对称转置
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i; j++) {//遍历下半部分
                int temp = matrix[i][j];
                 matrix[i][j]= matrix[j][i];
                matrix[j][i] = temp;
            }
        }

//        //1.根据对角线对称转置（遍历上半部分）
//        for (int i = 0; i < n; i++) {
//            for (int j = i + 1; j < n; j++) {//遍历上半部分
//                int temp = matrix[i][j];
//                matrix[i][j] = matrix[j][i];
//                matrix[j][i] = temp;
//            }
//        }


        //2. 行翻转
        for (int[] row : matrix) {
            for (int i = 0; i < n / 2; i++) {//遍历左半元素
                int temp = row[i];
                row[i] = row[n-1-i];
                row[n-1-i] = temp;
            }
        }
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}